package com.wind.stream;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Stream的使用：排序
 *
 * @author Wind
 * @date 2021-06-09
 */
public class Test11Stream {
    public static void main(String[] args) {

        List<Person> persons = new ArrayList<>();
        persons.add(new Person("张三", 7000, 34, "男", "陕西"));
        persons.add(new Person("李四", 8000, 42, "男", "河北"));
        persons.add(new Person("王五", 8000, 24, "女", "甘肃"));
        persons.add(new Person("王五", 9000, 12, "女", "上海"));

        // 将员工工资升序排序（自然排序）【从小到大】
        List<Person> sorted1 = persons.stream().sorted(Comparator.comparing(Person::getSalary)).collect(Collectors.toList());
        sorted1.forEach(System.out::println);
        System.out.println();

        // 将员工工资降序排序（倒序排序）【从大到小】
        List<Person> sorted2 = persons.stream().sorted(Comparator.comparing(Person::getSalary).reversed()).collect(Collectors.toList());
        sorted2.forEach(System.out::println);
        System.out.println();

        // 先按工资 再按年龄，升序排序
        List<Person> sorted3 = persons.stream().sorted(Comparator.comparing(Person::getSalary).thenComparing(Person::getAge)).collect(Collectors.toList());
        sorted3.forEach(System.out::println);
    }
}
